Source for file SC_CheckError.php
Documentation is available at SC_CheckError.php
* This file is part of EC-CUBE
* Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
* http://www.lockon.co.jp/
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
/*----------------------------------------------------------------------
*----------------------------------------------------------------------
// チェック対象の値が含まれる配列をセットする。
function doFunc($value, $arrFunc) {
foreach ( $arrFunc as $key ) {
// value[0] = 項目名 value[1] = 判定対象 value[2] = 許可するタグが格納された配列
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
foreach($arrTag[1] as $val) {
foreach($value[2] as $tag) {
if(eregi("^" .
$tag .
"$", $val)) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"に許可されていないタグ[" .
strtoupper($val) .
"]が含まれています。<br />";
// value[0] = 項目名 value[1] = 判定対象
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"が入力されていません。<br />";
// value[0] = 判定対象 value[1] = 項目名
if(isset
($this->arrErr[$value[0]])) {
$this->createParam($value);
$this->arrErr[$value[0]] =
"※ " .
$value[0] .
"が入力されていません。<br />";
// value[0] = 項目名 value[1] = 判定対象
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"にスペース、タブ、改行のみの入力はできません。<br />";
// value[0] = 項目名 value[1] = 判定対象
function NO_SPTAB( $value ) { // 受け取りがない場合エラーを返す
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"にスペース、タブ、改行は含めないで下さい。<br />";
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"に0で始まる数値が入力されています。<br />";
// value[0] = 項目名 value[1] = 判定対象
function SELECT_CHECK( $value ) { // プルダウンなどで選択されていない場合エラーを返す
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"が選択されていません。<br />";
// value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1 value[3] = 判定対象文字列2
if(isset
($this->arrErr[$value[2]]) || isset
($this->arrErr[$value[3]])) {
$this->createParam($value);
$this->arrErr[$value[2]] =
"※ " .
$value[0] .
"と" .
$value[1] .
"が一致しません。<br />";
// value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1 value[3] = 判定対象文字列2
if(isset
($this->arrErr[$value[2]]) || isset
($this->arrErr[$value[3]])) {
$this->createParam($value);
$this->arrErr[$value[2]] =
"※ " .
$value[0] .
"と" .
$value[1] .
"は、同じ値を使用できません。<br />";
/* 値の大きさを比較する value[2] < value[3]でなければエラー */
// value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1 value[3] = 判定対象文字列2
if(isset
($this->arrErr[$value[2]]) || isset
($this->arrErr[$value[3]])) {
$this->createParam($value);
$this->arrErr[$value[2]] =
"※ " .
$value[0] .
"は" .
$value[1] .
"より大きい値を入力できません。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最大文字数(半角も全角も1文字として数える)
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は" .
$value[2] .
"字以下で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小文字数(半角も全角も1文字として数える)
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は" .
$value[2] .
"字以上で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最大数
function MAX_CHECK( $value ) { // 入力が最大数以上ならエラーを返す
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
if($this->arrParam[$value[1]] >
$value[2] ) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は" .
$value[2] .
"以下で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小数
function MIN_CHECK( $value ) { // 入力が最小数未満ならエラーを返す
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
if($this->arrParam[$value[1]] <
$value[2] ) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は" .
$value[2] .
"以上で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列
function NUM_CHECK( $value ) { // 入力文字が数字以外ならエラーを返す
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は数字で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
if( strlen($this->arrParam[$value[1]]) >
0 &&
!EregI("^[[:digit:]]+[\.]?[[:digit:]]+$", $this->arrParam[$value[1]])) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は数字で入力してください。<br />";
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は半角英字で入力してください。<br />";
/* 電話番号の判定 (数字チェックと文字数チェックを実施する。)
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
for($i =
1; $i <=
3; $i++
) {
// すべての項目が満たされていない場合を判定(一部だけ入力されている状態)
if($cnt >
0 &&
$cnt <
3) {
$this->arrErr[$value[1]] .=
"※ " .
$value[0] .
"はすべての項目を入力してください。<br />";
for($i =
1; $i <=
3; $i++
) {
$this->arrErr[$value[$i]] .=
"※ " .
$value[0] .
$i .
"は" .
$value[4] .
"字以内で入力してください。<br />";
} else if (strlen($this->arrParam[$value[$i]]) >
0 &&
!EregI("^[[:digit:]]+$", $this->arrParam[$value[$i]])) {
$this->arrErr[$value[$i]] .=
"※ " .
$value[0] .
$i .
"は数字で入力してください。<br />";
$this->createParam($value);
// 既に該当項目にエラーがある場合は、判定しない。
for($i =
1; $i <
$max; $i++
) {
if(isset
($this->arrErr[$value[$i]])) {
// すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
for($i =
1; $i <
$max; $i++
) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"が入力されていません。<br />";
// 既に該当項目にエラーがある場合は、判定しない。
for($i =
1; $i <
$max; $i++
) {
if(isset
($this->arrErr[$value[$i]])) {
// すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
for($i =
1; $i <
$max; $i++
) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"はすべての項目を入力して下さい。<br />";
$this->createParam($value);
// 既に該当項目にエラーがある場合は、判定しない。
for($i =
1; $i <
$max; $i++
) {
if(isset
($this->arrErr[$value[$i]])) {
// すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
for($i =
1; $i <
$max; $i++
) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"が入力されていません。<br />";
$this->createParam($value);
// 既に該当項目にエラーがある場合は、判定しない。
for($i =
1; $i <
$max; $i++
) {
if(isset
($this->arrErr[$value[$i]])) {
// すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
for($i =
1; $i <
$max; $i++
) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は先頭の項目から順番に入力して下さい。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列
function KANA_CHECK( $value ) { // 入力文字がカナ以外ならエラーを返す
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"はカタカナで入力してください。<br />";
/* カタカナの判定2(タブ、スペースは許可する) */
// value[0] = 項目名 value[1] = 判定対象文字列
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"はカタカナで入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は英数字で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列
function GRAPH_CHECK( $value ) { // 入力文字が英数記号以外ならエラーを返す
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は英数記号で入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象
function ZERO_CHECK( $value ) { // 入力値で0が許されない場合エラーを返す
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は1以上を入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小桁数 value[3] = 最大桁数
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
// $this->arrParam[$value[0]] = mb_convert_kana($this->arrParam[$value[0]], "n");
if( ( $count >
0 ) &&
$value[2] >
$count ||
$value[3] <
$count ) {
$this->arrErr[$value[1]] =
"※ $value[0]は$value[2]桁~$value[3]桁で入力して下さい。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 桁数
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
if(($count >
0) &&
$count !=
$value[2] ) {
$this->arrErr[$value[1]] =
"※ $value[0]は$value[2]桁で入力して下さい。<br />";
// value[0] = 項目名 value[1] = 判定対象メールアドレス
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"の形式が不正です。<br />";
// value[0] = 項目名 value[1] = 判定対象メールアドレス
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"に使用する文字を正しく入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象URL
function URL_CHECK( $value ){ // URLを正規表現で判定する。デフォルトでhttp://があってもOK
if(isset
($this->arrErr[$value[1]])) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"を正しく入力してください。<br />";
// value[0] = 項目名 value[1] = 判定対象 value[2]=array(拡張子)
if(isset
($this->arrErr[$value[1]]) ||
count($value[2]) ==
0) {
$this->createParam($value);
if($_FILES[$value[1]]['name'] !=
"" ) {
$array_ext =
explode(".", $_FILES[$value[1]]['name']);
$ext =
$array_ext[ count ( $array_ext ) -
1 ];
foreach ( $value[2] as $checkExt ){
if ( $ext ==
$checkExt) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"で許可されている形式は、" .
$strExt .
"です。<br />";
// value[0] = 項目名 value[1] = 判定対象 value[2] = 指定ディレクトリ
function FIND_FILE( $value ) { // 受け取りがない場合エラーを返す
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$path =
$dir .
"/" .
$this->arrParam[$value[1]];
$this->arrErr[$value[1]] =
"※ " .
$path .
"が見つかりません。<br />";
// value[0] = 項目名 value[1] = 判定対象 value[2] = 指定サイズ(KB)
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
if(!($_FILES[$value[1]]['size'] !=
"" &&
$_FILES[$value[1]]['size'] >
0)){
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"をアップロードして下さい。<br />";
// value[0] = 項目名 value[1] = 判定対象 value[2] = 指定サイズ(KB)
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
if( $_FILES[$value[1]]['size'] >
$value[2] *
1024 ){
if( $value[2] >=
1000 ) {
$value[2] =
$value[2] /
1000;
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"のファイルサイズは" .
$value[2] .
$byte .
"以下のものを使用してください。<br />";
// value[0] = 項目名 value[1] = 判定対象文字列
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
if( strlen($_FILES[$value[1]]['name']) >
0 &&
! EregI("^[[:alnum:]_\.-]+$", $_FILES[$value[1]]['name']) ) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"のファイル名に日本語やスペースは使用しないで下さい。<br />";
/* ファイル名の判定(アップロード以外の時) */
// value[0] = 項目名 value[1] = 判定対象文字列
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
if( strlen($this->arrParam[$value[1]]) >
0 &&
! EregI("^[[:alnum:]_\.-]+$", $this->arrParam[$value[1]]) ||
EregI("[\\]" ,$this->arrParam[$value[1]])) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"のファイル名に日本語やスペースは使用しないで下さい。<br />";
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"はすべての項目を入力して下さい。<br />";
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"が正しくありません。<br />";
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"はすべての項目を入力して下さい。<br />";
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"が正しくありません。<br />";
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"はすべての項目を入力して下さい。<br />";
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"が正しくありません。<br />";
if (isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->doFunc(array($value[0].
'(年)', $value[1], START_BIRTH_YEAR), array("NUM_CHECK", "MIN_CHECK"));
if (isset
($this->arrErr[$value[1]])) {
$this->doFunc(array($value[0].
'(年)', $value[1], date("Y",strtotime("now"))), array("MAX_CHECK"));
if (isset
($this->arrErr[$value[1]])) {
// XXX createParam() が二重に呼ばれる問題を抱える
/*-----------------------------------------------------------------*/
/* 年月日に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
/* 引数 (開始年,開始月,開始日,終了年,終了月,終了日)
/* 1.開始年月日 (YYYYMMDD 000000)
/* 2.終了年月日 (YYYYMMDD 235959)
/* 3.エラー ( 0 = OK, 1 = NG )
/*-----------------------------------------------------------------*/
// value[3] = start_month
if(isset
($this->arrErr[$value[2]]) || isset
($this->arrErr[$value[5]])) {
$this->createParam($value);
$this->arrErr[$value[2]] =
"※ " .
$value[0] .
"を正しく指定してください。<br />";
$this->arrErr[$value[5]] =
"※ " .
$value[1] .
"を正しく指定してください。<br />";
if (($this->arrErr[$value[2]] ==
"" &&
$this->arrErr[$value[5]] ==
"") &&
$date1 >
$date2) {
$this->arrErr[$value[2]] =
"※ " .
$value[0].
"と" .
$value[1].
"の期間指定が不正です。<br />";
/*-----------------------------------------------------------------*/
/* 年月日時に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
/* 引数 (開始年,開始月,開始日,開始時間,開始分,開始秒,
/* 終了年,終了月,終了日,終了時間,終了分,終了秒)
/* 1.開始年月日 (YYYYMMDDHHmmss)
/* 2.終了年月日 (YYYYMMDDHHmmss)
/* 3.エラー ( 0 = OK, 1 = NG )
/*-----------------------------------------------------------------*/
// value[3] = start_month
// value[6] = start_minute
// value[7] = start_second
// value[12] = end_minute
// value[13] = end_second
/*-----------------------------------------------------------------*/
if(isset
($this->arrErr[$value[2]]) || isset
($this->arrErr[$value[8]])) {
$this->createParam($value);
$this->arrErr[$value[2]] =
"※ " .
$value[0] .
"を正しく指定してください。<br />";
$this->arrErr[$value[8]] =
"※ " .
$value[1] .
"を正しく指定してください。<br />";
if (($this->arrErr[$value[2]] ==
"" &&
$this->arrErr[$value[8]] ==
"") &&
$date1 >
$date2) {
$this->arrErr[$value[2]] =
"※ " .
$value[0].
"と" .
$value[1].
"の期間指定が不正です。<br />";
$this->arrErr[$value[2]] =
"※ " .
$value[0].
"と" .
$value[1].
"の期間指定が不正です。<br />";
/*-----------------------------------------------------------------*/
/* 年月に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
/* 1.開始年月日 (YYYYMMDD 000000)
/* 2.終了年月日 (YYYYMMDD 235959)
/* 3.エラー ( 0 = OK, 1 = NG )
/*-----------------------------------------------------------------*/
// value[3] = start_month
if(isset
($this->arrErr[$value[2]]) || isset
($this->arrErr[$value[4]])) {
$this->createParam($value);
$this->arrErr[$value[2]] =
"※ " .
$value[0] .
"を正しく指定してください。<br />";
$this->arrErr[$value[4]] =
"※ " .
$value[1] .
"を正しく指定してください。<br />";
if (($this->arrErr[$value[2]] ==
"" &&
$this->arrErr[$value[5]] ==
"") &&
$date1 >
$date2) {
$this->arrErr[$value[2]] =
"※ " .
$value[0].
"と" .
$value[1].
"の期間指定が不正です。<br />";
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
$this->arrErr[$value[1]] =
"※ 指定した" .
$value[0] .
"は存在しません。<br />";
if(isset
($this->arrErr[$value[1]])) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"の形式が不正です。<br />";
// value[0] = 項目名 value[1] = 判定対象メールアドレス
if(isset
($this->arrErr[$value[1]])) {
$this->createParam($value);
if(strlen($this->arrParam[$value[1]]) >
0 &&
!$objMobile->gfIsMobileMailAddress($this->arrParam[$value[1]])) {
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は携帯電話のものではありません。<br />";
* value[0] = 項目名 value[1] = 判定対象文字列
* value[2] = 入力を禁止する文字列(配列)
* @example $objErr->doFunc(array("URL", "contents", $arrReviewDenyURL), array("PROHIBITED_STR_CHECK"));
if( isset
($this->arrErr[$value[1]]) ||
empty($this->arrParam[$value[1]]) ) {
$this->createParam($value);
$targetStr =
$this->arrParam[$value[1]];
$prohibitedStr =
str_replace(array('|', '/'), array('\|', '\/'), $value[2]);
$pattern =
'/' .
join('|', $prohibitedStr) .
'/i';
$this->arrErr[$value[1]] =
"※ " .
$value[0] .
"は入力できません。<br />";
* @param array $value [0] => 項目名, [1] => 評価する文字列
function EVAL_CHECK($value) {
if (isset
($this->arrErr[$value[0]])) {
$this->createParam($value);
if ($this->evalCheck($value[1]) ===
false) {
$this->arrErr[$value[0]] =
"※ " .
$value[0] .
" の形式が不正です。<br />";
* $value が PHPコードとして評価可能かチェックする.
* @param mixed PHPコードとして評価する文字列
* @return mixed PHPコードとして評価できない場合 false,
function evalCheck($value) {
return @eval
("return " .
$value .
";");
* 未定義の $this->arrParam に空要素を代入する.
function createParam($value) {
foreach ($value as $key) {
Documentation generated on Tue, 28 Apr 2009 18:13:10 +0900 by phpDocumentor 1.4.2